home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
C and C++
/
Libraries
/
Fab Libraries
/
Independents.a
< prev
next >
Wrap
Text File
|
1994-01-05
|
1KB
|
92 lines
* Did you know GetIndString is glue code (not a trap)?
* The GetIndString glue is written very badly, so I wrote one
* myself, and wrote a useful variant for loops.
CASE ON
INCLUDE 'Traps.a'
;StringPtr GetPtrIndHString(Handle resH, short index)
GetPtrIndHString PROC EXPORT
resH EQU 8
index EQU 14
LINK A6,#0
MOVEQ #0,D0
MOVEA.L resH(A6),A0
MOVEA.L (A0),A0
MOVEQ #0,D1
MOVE.W index(A6),D1
CMP.W (A0)+,D1 ;number of strings
BHI.S @err
BRA.S @begin
@loop
MOVE.B (A0)+,D0
ADDA.L D0,A0
@begin
DBF D1,@loop
MOVE.L A0,D0
@err
UNLK A6
RTS
ENDP
;void GetIndHString(Str255 *dest, Handle resH, short index)
GetIndHString PROC EXPORT
dest EQU 8
resH EQU 12
index EQU 18
LINK A6,#0
MOVEA.L dest(A6),A1
MOVEA.L resH(A6),A0
MOVEA.L (A0),A0
MOVEQ #0,D1
MOVEQ #0,D0
MOVE.W index(A6),D1
CMP.W (A0)+,D1 ;number of strings
BHI.S @err
BRA.S @begin
@loop
MOVE.B (A0)+,D0
ADDA.L D0,A0
@begin
DBF D1,@loop
MOVE.B (A0),D0
ADDQ.B #1,D0
_BlockMove
BRA.S @end
@err
CLR.W (A1)
@end
UNLK A6
RTS
ENDP
;Boolean KeyState(short key)
KeyState PROC EXPORT
mymap EQU -16
key EQU 10 ;MPW C
LINK A6,#mymap
PEA mymap(A6)
_GetKeys
MOVEQ #0,D1
MOVE.W key(A6),D1
MOVE.L D1,D0
LSR.W #3,D0 ; D0 = key/8
ANDI.W #7,D1 ; D1 = key%8
LEA mymap(A6),A0
ADDA.W D0,A0 ; A0 = &KeyMap + key/8
BTST.B D1,(A0)
SNE D0
UNLK A6
RTS
ENDP
END